package com.rmsdk;

import android.content.Context;
import android.os.IBinder;
import android.os.RemoteException;
import android.text.method.ScrollingMovementMethod;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.reeman.nerves.RobotActionProvider;
import com.rsc.impl.OnROSListener;
import com.rsc.impl.RscServiceConnectionImpl;
import com.rsc.reemanclient.ConnectServer;
import com.synjones.idcard.IDCardInfo;
import com.synjones.idcard.OnIDListener;

/**
 * @author Created by ZJcan on 2017-04-22.
 */

public class ApViewController implements View.OnClickListener {

    private MainActivity mContext;
    private TextView recog, speak, show, vol, wake, rosip, getrosip;
    String[] arr = {
            " 外设控制集成",
            " ConnectServer 初始化",
            " 机器外设 —— 打印机",
            " 机器外设 —— 身份证识别",
            " 硬件以及系统接口集成",
            " RobotActionProvider 初始化",
            " 串口 3 通讯",
            " 串口 4 通讯",
            " 获取 short 的高8位",
            " 获取 short 的低8位",
            " 获取 short 的低8位",
            " 执行 adb 指令",
            " 前进(带速度控制)",
            " 前进(默认速度)",
            " 后退",
            " 左转",
            " 右转",
            " 停止底座前后左右运动",
            " 获取设备唯一id",
            " 屏蔽系统home键功能",
            " 获取SDK版本号",
            " 获取MCU版本号",
            " 耳朵灯控制",
            " 眼睛灯控制",
            " 头部运动控制",
            " 组合动作控制",
            " 急停开关的检测与接收",
            " 头部当前位置获取",
            " 获取头部版本",
            " 设置6mic拾音方向",
            " 设置8mic拾音方向",
            " 获取底座版本",
            " 获取头部版本",
            " 获取手臂版本",
            " 返回机器超声波红外的值",
            " 导航模块",
            " 执行导航相关指令",
            " 接收导航相关反馈",
            " 机器人系统广播",

    };
    ConnectServer cs;

    public ApViewController(Context context) {
        mContext = (MainActivity) context;
        initView();
    }

    private void initView() {
        LinearLayout llContent = mContext.findViewById(R.id.ll_content);
        for (int i = 0; i < arr.length; i++) {
            View view = LayoutInflater.from(mContext).inflate(R.layout.item_text, null);
            TextView tv = view.findViewById(R.id.tv_txt);
            tv.setText(i + arr[i]);
            tv.setOnClickListener(listener);
            llContent.addView(view);
        }
    }

    private View.OnClickListener listener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(mContext, ((TextView) v).getText().toString(), Toast.LENGTH_SHORT).show();
            TextView textView = ((TextView) v);
            String value = textView.getText().toString();
            Toast.makeText(mContext, value, Toast.LENGTH_SHORT).show();
            if (value.contains(" 外设控制集成")) {

            } else if (value.contains(" ConnectServer 初始化")) {
                cs = ConnectServer.getInstance(mContext.getApplication(), impl);
//                RscServiceConnectionImpl 为 Service 绑定回调，这里会注册 一些外设回调，后面会 详细介绍。建议在 Activity 的 onCreate 中使用
                return;
            } else if (value.contains(" 机器外设 —— 打印机")) {
//                onPrint(String text, int type, OnPrintListener listener)

            } else if (value.contains(" 机器外设 —— 身份证识别")) {
                RscServiceConnectionImpl impl = new RscServiceConnectionImpl() {
                    public void onServiceConnected(int name) {
                        if (cs == null)
                            return;

                        if (name == ConnectServer.Connect_Pr_Id) {
                            Log.v("demo", "Connect_Pr_Id ");
                            cs.registerIDListener(new OnIDListener() {
                                @Override
                                public void onResult(IDCardInfo idCardInfo, byte[] bytes) throws RemoteException {
                                    Log.e("AP", "onResult  ===> " + idCardInfo.getName());
                                }

                                @Override
                                public IBinder asBinder() {
                                    return null;
                                }
                            });
                        }

                    }

                    public void onServiceDisconnected(int name) {
                        System.out.println("onServiceDisconnected.	");
                    }

                };
                cs = ConnectServer.getInstance(mContext.getApplication(), impl);
            } else if (value.contains(" 硬件以及系统接口集成")) {
            } else if (value.contains(" RobotActionProvider 初始化")) {
                RobotActionProvider.getInstance().systemHome();
            } else if (value.contains(" 串口 3 通讯")) {
//RobotActionProvider.getInstance().sendTtyS3();
            } else if (value.contains(" 串口 4 通讯")) {
            } else if (value.contains(" 获取 short 的高8位")) {

            } else if (value.contains(" 获取 short 的低8位")) {

            } else if (value.contains(" 获取 short 的低8位")) {

            } else if (value.contains(" 执行 adb 指令")) {

            } else if (value.contains(" 前进(带速度控制)")) {
                RobotActionProvider.getInstance().moveFront(50, 600);
            } else if (value.contains(" 前进(默认速度)")) {
                RobotActionProvider.getInstance().moveFront(10, 200);
            } else if (value.contains(" 后退")) {
                RobotActionProvider.getInstance().moveBack(50, 200);
            } else if (value.contains(" 左转")) {
                RobotActionProvider.getInstance().moveLeft(90, 200);
            } else if (value.contains(" 右转")) {
                RobotActionProvider.getInstance().moveRight(90, 200);
            } else if (value.contains(" 停止底座前后左右运动")) {
                RobotActionProvider.getInstance().stopMove();
            } else if (value.contains(" 获取设备唯一id")) {
                String robotID = RobotActionProvider.getInstance().getRobotID();
                textView.append("    " + robotID);
            } else if (value.contains(" 屏蔽系统home键功能")) {
                int isShowHome = 0;
                if (value.contains("-")) {
                    String[] arr = value.split("-");
                    if (arr[arr.length - 1].contains("0")) {
                        isShowHome = 1;
                    } else {
                        isShowHome = 0;
                    }
                }
                RobotActionProvider.getInstance().shieldHome(isShowHome);
                textView.append("-" + isShowHome);
            } else if (value.contains(" 获取SDK版本号")) {
                textView.append("-" + RobotActionProvider.getInstance().getSDKVersion());
            } else if (value.contains(" 获取MCU版本号")) {
                textView.append("-" + RobotActionProvider.getInstance().getHardVersion(1));
            } else if (value.contains(" 耳朵灯控制")) {
                RobotActionProvider.getInstance().earControlTtyS4(2);
            } else if (value.contains(" 眼睛灯控制")) {
                RobotActionProvider.getInstance().eyeControlTtyS4(2);
            } else if (value.contains(" 头部运动控制")) {
//                RobotActionProvider.getInstance().headControlTtyS4();
            } else if (value.contains(" 组合动作控制")) {
                RobotActionProvider.getInstance().combinedActionTtyS4(5);
            } else if (value.contains(" 急停开关的检测与接收")) {
                textView.append("  " + RobotActionProvider.getInstance().getScramState());
            } else if (value.contains(" 头部当前位置获取")) {
                int[] arr = RobotActionProvider.getInstance().getHeadPosition();
                for (int i = 0; i < arr.length; i++) {
                    textView.append(arr[i] + "-");
                }
            } else if (value.contains(" 获取头部版本")) {
            } else if (value.contains(" 设置6mic拾音方向")) {
                RobotActionProvider.getInstance().setMicAngle(0);
            } else if (value.contains(" 设置8mic拾音方向")) {
                RobotActionProvider.getInstance().setBeam(0);
            } else if (value.contains(" 获取底座版本")) {
                textView.append(RobotActionProvider.getInstance().getBottomMode() + "");
            } else if (value.contains(" 获取头部版本")) {
            } else if (value.contains(" 获取手臂版本")) {
            } else if (value.contains(" 返回机器超声波红外的值")) {
                for (int i = 21; i < 32; i++) {
                    textView.append("" + RobotActionProvider.getInstance().getRevTtys3(i));
                }
            } else if (value.contains(" 导航模块")) {
            } else if (value.contains(" 执行导航相关指令")) {

                RobotActionProvider.getInstance().sendRosCom("goal:nav[A]");

            } else if (value.contains(" 接收导航相关反馈")) {
                cs.registerROSListener(new OnROSListener() {
                    @Override
                    public void onResult(String ttys3) {
                        super.onResult(ttys3);
                        Toast.makeText(mContext, ttys3, Toast.LENGTH_SHORT).show();
                    }
                });
            } else if (value.contains(" 机器人系统广播")) {

            }
        }
    };
    RscServiceConnectionImpl impl = new RscServiceConnectionImpl() {
        public void onServiceConnected(int name) {
            if (cs == null)
                return;

//            if (name == ConnectServer.Connect_D3) {
//                cs.register3DSensorListener(Dlistener);
//            } else if (name == ConnectServer.Connect_Pr_Id) {
//                Log.v("demo", "Connect_Pr_Id ");
//                System.out.println("sdk version: " + cs.getSDKVersion());
//                cs.registerIDListener(Ilistener);
//            }
        }

        public void onServiceDisconnected(int name) {
            System.out.println("onServiceDisconnected......");
        }
    };

    void setRecog(String t) {
        recog.setText(t);
    }

    void setSpeak(String t) {
        speak.setText(t);
    }

    void setShow(String t) {
        show.setText(t);
    }

    void setVol(String v) {
        vol.setText(v);
    }

    public void setWake(String w) {
        wake.setText(w);
    }

    public void setRosip(String ww) {
        rosip.setText(ww);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            default:
                break;
        }
    }
}
